diff --git a/system/core/Loader.php b/system/core/Loader.php
index 4d95d62..1ad07f1 100644
--- a/system/core/Loader.php
+++ b/system/core/Loader.php
@@ -205,7 +205,7 @@
 			return;
 		}
 
-		if ( ! is_null($params) && ! is_array($params))
+		if ($params !== NULL && ! is_array($params))
 		{
 			$params = NULL;
 		}
@@ -975,7 +975,7 @@
 					// Before we deem this to be a duplicate request, let's see
 					// if a custom object name is being supplied. If so, we'll
 					// return a new instance of the object
-					if ( ! is_null($object_name))
+					if ($object_name !== NULL)
 					{
 						$CI =& get_instance();
 						if ( ! isset($CI->$object_name))
@@ -1014,7 +1014,7 @@
 					// Before we deem this to be a duplicate request, let's see
 					// if a custom object name is being supplied. If so, we'll
 					// return a new instance of the object
-					if ( ! is_null($object_name))
+					if ($object_name !== NULL)
 					{
 						$CI =& get_instance();
 						if ( ! isset($CI->$object_name))
@@ -1144,7 +1144,7 @@
 		// Was a custom class name supplied? If so we'll use it
 		$class = strtolower($class);
 
-		if (is_null($object_name))
+		if ($object_name === NULL)
 		{
 			$classvar = isset($this->_ci_varmap[$class]) ? $this->_ci_varmap[$class] : $class;
 		}
diff --git a/system/database/DB_driver.php b/system/database/DB_driver.php
index 1e5e8c6..2679139 100644
--- a/system/database/DB_driver.php
+++ b/system/database/DB_driver.php
@@ -993,7 +993,7 @@
 		{
 			return ($str === FALSE) ? 0 : 1;
 		}
-		elseif (is_null($str))
+		elseif ($str === NULL)
 		{
 			return 'NULL';
 		}
diff --git a/system/database/DB_query_builder.php b/system/database/DB_query_builder.php
index dc2c5e7..ac377d9 100644
--- a/system/database/DB_query_builder.php
+++ b/system/database/DB_query_builder.php
@@ -644,7 +644,7 @@
 				? $this->_group_get_type('')
 				: $this->_group_get_type($type);
 
-			if ( ! is_null($v))
+			if ($v !== NULL)
 			{
 				if ($escape === TRUE)
 				{
@@ -1382,7 +1382,7 @@
 			$this->from($table);
 		}
 
-		if ( ! is_null($where))
+		if ($where !== NULL)
 		{
 			$this->where($where);
 		}
@@ -1411,7 +1411,7 @@
 	 */
 	public function insert_batch($table = '', $set = NULL, $escape = NULL)
 	{
-		if ( ! is_null($set))
+		if ($set !== NULL)
 		{
 			$this->set_insert_batch($set, '', $escape);
 		}
@@ -1567,7 +1567,7 @@
 	 */
 	public function insert($table = '', $set = NULL, $escape = NULL)
 	{
-		if ( ! is_null($set))
+		if ($set !== NULL)
 		{
 			$this->set($set, '', $escape);
 		}
@@ -1633,7 +1633,7 @@
 	 */
 	public function replace($table = '', $set = NULL)
 	{
-		if ( ! is_null($set))
+		if ($set !== NULL)
 		{
 			$this->set($set);
 		}
@@ -1742,7 +1742,7 @@
 		// Combine any cached components with the current statements
 		$this->_merge_cache();
 
-		if ( ! is_null($set))
+		if ($set !== NULL)
 		{
 			$this->set($set);
 		}
@@ -1815,12 +1815,12 @@
 		// Combine any cached components with the current statements
 		$this->_merge_cache();
 
-		if (is_null($index))
+		if ($index === NULL)
 		{
 			return ($this->db_debug) ? $this->display_error('db_must_use_index') : FALSE;
 		}
 
-		if ( ! is_null($set))
+		if ($set !== NULL)
 		{
 			$this->set_update_batch($set, $index);
 		}
diff --git a/system/database/DB_result.php b/system/database/DB_result.php
index dfd8081..a044fd5 100644
--- a/system/database/DB_result.php
+++ b/system/database/DB_result.php
@@ -354,7 +354,7 @@
 			return;
 		}
 
-		if ($key !== '' && ! is_null($value))
+		if ($key !== '' && $value !== NULL)
 		{
 			$this->row_data[$key] = $value;
 		}
diff --git a/system/libraries/Email.php b/system/libraries/Email.php
index 1834be2..997757b 100644
--- a/system/libraries/Email.php
+++ b/system/libraries/Email.php
@@ -1335,7 +1335,7 @@
 		for ($i = 0, $c = count($this->_attachments), $z = 0; $i < $c; $i++)
 		{
 			$filename = $this->_attachments[$i]['name'][0];
-			$basename = is_null($this->_attachments[$i]['name'][1])
+			$basename = ($this->_attachments[$i]['name'][1] === NULL)
 				? basename($filename) : $this->_attachments[$i]['name'][1];
 			$ctype = $this->_attachments[$i]['type'];
 			$file_content = '';
diff --git a/system/libraries/Form_validation.php b/system/libraries/Form_validation.php
index c405eb6..bbd0b52 100644
--- a/system/libraries/Form_validation.php
+++ b/system/libraries/Form_validation.php
@@ -511,7 +511,7 @@
 	{
 		foreach ($this->_field_data as $field => $row)
 		{
-			if ( ! is_null($row['postdata']))
+			if ($row['postdata'] !== NULL)
 			{
 				if ($row['is_array'] === FALSE)
 				{
@@ -583,7 +583,7 @@
 
 		// If the field is blank, but NOT required, no further tests are necessary
 		$callback = FALSE;
-		if ( ! in_array('required', $rules) && is_null($postdata))
+		if ( ! in_array('required', $rules) && $postdata === NULL)
 		{
 			// Before we bail out, does the rule contain a callback?
 			if (preg_match('/(callback_\w+(\[.*?\])?)/', implode(' ', $rules), $match))
@@ -598,7 +598,7 @@
 		}
 
 		// Isset Test. Typically this rule will only apply to checkboxes.
-		if (is_null($postdata) && $callback === FALSE)
+		if ($postdata === NULL && $callback === FALSE)
 		{
 			if (in_array('isset', $rules, TRUE) OR in_array('required', $rules))
 			{
diff --git a/system/libraries/Ftp.php b/system/libraries/Ftp.php
index b8729a9..dc6bbd2 100644
--- a/system/libraries/Ftp.php
+++ b/system/libraries/Ftp.php
@@ -266,7 +266,7 @@
 		}
 
 		// Set file permissions if needed
-		if ( ! is_null($permissions))
+		if ($permissions !== NULL)
 		{
 			$this->chmod($path, (int) $permissions);
 		}
@@ -320,7 +320,7 @@
 		}
 
 		// Set file permissions if needed
-		if ( ! is_null($permissions))
+		if ($permissions !== NULL)
 		{
 			$this->chmod($rempath, (int) $permissions);
 		}
diff --git a/system/libraries/Javascript.php b/system/libraries/Javascript.php
index 542a0ec..7f1d855 100644
--- a/system/libraries/Javascript.php
+++ b/system/libraries/Javascript.php
@@ -737,7 +737,7 @@
 	{
 		// JSON data can optionally be passed to this function
 		// either as a database result object or an array, or a user supplied array
-		if ( ! is_null($result))
+		if ($result !== NULL)
 		{
 			if (is_object($result))
 			{
@@ -823,7 +823,7 @@
 	 */
 	protected function _prep_args($result, $is_key = FALSE)
 	{
-		if (is_null($result))
+		if ($result === NULL)
 		{
 			return 'null';
 		}
diff --git a/system/libraries/Table.php b/system/libraries/Table.php
index 8656990..b77fcf1 100644
--- a/system/libraries/Table.php
+++ b/system/libraries/Table.php
@@ -291,7 +291,7 @@
 	{
 		// The table data can optionally be passed to this function
 		// either as a database result object or an array
-		if ( ! is_null($table_data))
+		if ($table_data !== NULL)
 		{
 			if (is_object($table_data))
 			{
diff --git a/system/libraries/Unit_test.php b/system/libraries/Unit_test.php
index de8c9bb..7a67c72 100644
--- a/system/libraries/Unit_test.php
+++ b/system/libraries/Unit_test.php
@@ -356,12 +356,12 @@
 	 */
 	protected function _parse_template()
 	{
-		if ( ! is_null($this->_template_rows))
+		if ($this->_template_rows !== NULL)
 		{
 			return;
 		}
 
-		if (is_null($this->_template) OR ! preg_match('/\{rows\}(.*?)\{\/rows\}/si', $this->_template, $match))
+		if ($this->_template === NULL OR ! preg_match('/\{rows\}(.*?)\{\/rows\}/si', $this->_template, $match))
 		{
 			$this->_default_template();
 			return;
diff --git a/system/libraries/User_agent.php b/system/libraries/User_agent.php
index 542deb7..1f4b2fa 100644
--- a/system/libraries/User_agent.php
+++ b/system/libraries/User_agent.php
@@ -158,7 +158,7 @@
 			$this->agent = trim($_SERVER['HTTP_USER_AGENT']);
 		}
 
-		if ( ! is_null($this->agent) && $this->_load_agent_file())
+		if ($this->agent !== NULL && $this->_load_agent_file())
 		{
 			$this->_compile_data();
 		}
diff --git a/system/libraries/Xmlrpc.php b/system/libraries/Xmlrpc.php
index c3c7690..9e60791 100644
--- a/system/libraries/Xmlrpc.php
+++ b/system/libraries/Xmlrpc.php
@@ -368,7 +368,7 @@
 	 */
 	public function timeout($seconds = 5)
 	{
-		if ( ! is_null($this->client) && is_int($seconds))
+		if ($this->client !== NULL && is_int($seconds))
 		{
 			$this->client->timeout = $seconds;
 		}
diff --git a/user_guide_src/source/libraries/email.rst b/user_guide_src/source/libraries/email.rst
index 8643444..7d46825 100644
--- a/user_guide_src/source/libraries/email.rst
+++ b/user_guide_src/source/libraries/email.rst
@@ -40,8 +40,6 @@
 
 	$this->email->send();
 
-	echo $this->email->print_debugger();
-
 Setting Email Preferences
 =========================
 
@@ -51,7 +49,7 @@
 below:
 
 Preferences are set by passing an array of preference values to the
-email initialize function. Here is an example of how you might set some
+email initialize method. Here is an example of how you might set some
 preferences::
 
 	$config['protocol'] = 'sendmail';
@@ -71,8 +69,8 @@
 instead put them into a config file. Simply create a new file called the
 email.php, add the $config array in that file. Then save the file at
 config/email.php and it will be used automatically. You will NOT need to
-use the $this->email->initialize() function if you save your preferences
-in a config file.
+use the ``$this->email->initialize()`` method if you save your
+preferences in a config file.
 
 Email Preferences
 =================
@@ -107,8 +105,8 @@
 **dsn**             FALSE                  TRUE or FALSE (boolean)      Enable notify message from server
 =================== ====================== ============================ =======================================================================
 
-Email Function Reference
-========================
+Email Methods Reference
+=======================
 
 $this->email->from()
 --------------------
@@ -125,10 +123,10 @@
 	'smtp' as your protocol.
 
 $this->email->reply_to()
--------------------------
+------------------------
 
 Sets the reply-to address. If the information is not provided the
-information in the "from" function is used. Example::
+information in the "from" method is used. Example::
 
 	$this->email->reply_to('you@example.com', 'Your Name');
 
@@ -177,7 +175,7 @@
 	$this->email->message('This is my message');
 
 $this->email->set_alt_message()
----------------------------------
+-------------------------------
 
 Sets the alternative email message body::
 
@@ -200,21 +198,21 @@
 $this->email->clear()
 ---------------------
 
-Initializes all the email variables to an empty state. This function is
-intended for use if you run the email sending function in a loop,
+Initializes all the email variables to an empty state. This method is
+intended for use if you run the email sending method in a loop,
 permitting the data to be reset between cycles.
 
 ::
 
 	foreach ($list as $name => $address)
 	{
-	    $this->email->clear();
+		$this->email->clear();
 
-	    $this->email->to($address);
-	    $this->email->from('your@example.com');
-	    $this->email->subject('Here is your info '.$name);
-	    $this->email->message('Hi '.$name.' Here is the info you requested.');
-	    $this->email->send();
+		$this->email->to($address);
+		$this->email->from('your@example.com');
+		$this->email->subject('Here is your info '.$name);
+		$this->email->message('Hi '.$name.' Here is the info you requested.');
+		$this->email->send();
 	}
 
 If you set the parameter to TRUE any attachments will be cleared as
@@ -225,15 +223,15 @@
 $this->email->send()
 --------------------
 
-The Email sending function. Returns boolean TRUE or FALSE based on
+The Email sending method. Returns boolean TRUE or FALSE based on
 success or failure, enabling it to be used conditionally::
 
 	if ( ! $this->email->send())
 	{
-	    // Generate error
+		// Generate error
 	}
 
-This function will automatically clear all parameters if the request was
+This method will automatically clear all parameters if the request was
 successful. To stop this behaviour pass FALSE::
 
  	if ($this->email->send(FALSE))
@@ -241,12 +239,15 @@
  		// Parameters won't be cleared
  	}
 
+.. note:: In order to use the ``print_debugger()`` method, you need
+	to avoid clearing the email parameters.
+
 $this->email->attach()
 ----------------------
 
 Enables you to send an attachment. Put the file path/name in the first
 parameter. Note: Use a file path, not a URL. For multiple attachments
-use the function multiple times. For example::
+use the method multiple times. For example::
 
 	$this->email->attach('/path/to/photo1.jpg');
 	$this->email->attach('/path/to/photo2.jpg');
@@ -278,6 +279,11 @@
 
 Example::
 
+	// You need to pass FALSE while sending in order for the email data
+	// to not be cleared - if that happens, print_debugger() would have
+	// nothing to output.
+	$this->email->send(FALSE);
+
 	// Will only print the email headers, excluding the message subject and body
 	$this->email->print_debugger(array('headers'));
 
@@ -301,4 +307,4 @@
 	wrapped normally.
 	
 
-Place the item you do not want word-wrapped between: {unwrap} {/unwrap}
+Place the item you do not want word-wrapped between: {unwrap} {/unwrap}
\ No newline at end of file
